home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / internet / sweeper / samples / docobj / site.h < prev    next >
C/C++ Source or Header  |  1995-11-22  |  5KB  |  186 lines

  1. /*
  2.  * SITE.H
  3.  * View Site for Document Objects.
  4.  *
  5.  * Copyright (c)1995 Microsoft Corporation, All Rights Reserved
  6.  * Kraig Brockschmidt, Microsoft, kraigb@microsoft.com
  7.  */
  8.  
  9.  
  10. #ifndef _SITE_H_
  11. #define _SITE_H_
  12.  
  13.  
  14. class CImpIOleClientSite : public IOleClientSite
  15.     {
  16.     protected:
  17.         ULONG               m_cRef;
  18.         class CSite        *m_pSite;
  19.         LPUNKNOWN           m_pUnkOuter;
  20.  
  21.     public:
  22.         CImpIOleClientSite(class CSite *, IUnknown *);
  23.         ~CImpIOleClientSite(void);
  24.  
  25.         STDMETHODIMP QueryInterface(REFIID, void **);
  26.         STDMETHODIMP_(ULONG) AddRef(void);
  27.         STDMETHODIMP_(ULONG) Release(void);
  28.  
  29.         STDMETHODIMP SaveObject(void);
  30.         STDMETHODIMP GetMoniker(DWORD, DWORD, LPMONIKER *);
  31.         STDMETHODIMP GetContainer(LPOLECONTAINER *);
  32.         STDMETHODIMP ShowObject(void);
  33.         STDMETHODIMP OnShowWindow(BOOL);
  34.         STDMETHODIMP RequestNewObjectLayout(void);
  35.     };
  36.  
  37. typedef CImpIOleClientSite *PCImpIOleClientSite;
  38.  
  39.  
  40.  
  41. class CImpIAdviseSink : public IAdviseSink
  42.     {
  43.     protected:
  44.         ULONG               m_cRef;
  45.         class CSite        *m_pSite;
  46.         LPUNKNOWN           m_pUnkOuter;
  47.  
  48.     public:
  49.         CImpIAdviseSink(class CSite *, IUnknown *);
  50.         ~CImpIAdviseSink(void);
  51.  
  52.         STDMETHODIMP QueryInterface(REFIID, void **);
  53.         STDMETHODIMP_(ULONG) AddRef(void);
  54.         STDMETHODIMP_(ULONG) Release(void);
  55.  
  56.         STDMETHODIMP_(void)  OnDataChange(LPFORMATETC, LPSTGMEDIUM);
  57.         STDMETHODIMP_(void)  OnViewChange(DWORD, LONG);
  58.         STDMETHODIMP_(void)  OnRename(LPMONIKER);
  59.         STDMETHODIMP_(void)  OnSave(void);
  60.         STDMETHODIMP_(void)  OnClose(void);
  61.     };
  62.  
  63.  
  64. typedef CImpIAdviseSink *PCImpIAdviseSink;
  65.  
  66.  
  67. class CImpIOleInPlaceSite : public IOleInPlaceSite
  68.     {
  69.     protected:
  70.         ULONG               m_cRef;
  71.         class CSite        *m_pSite;
  72.         LPUNKNOWN           m_pUnkOuter;
  73.  
  74.     public:
  75.         CImpIOleInPlaceSite(class CSite *, IUnknown *);
  76.         ~CImpIOleInPlaceSite(void);
  77.  
  78.         STDMETHODIMP QueryInterface(REFIID, void **);
  79.         STDMETHODIMP_(ULONG) AddRef(void);
  80.         STDMETHODIMP_(ULONG) Release(void);
  81.  
  82.         STDMETHODIMP GetWindow(HWND *);
  83.         STDMETHODIMP ContextSensitiveHelp(BOOL);
  84.         STDMETHODIMP CanInPlaceActivate(void);
  85.         STDMETHODIMP OnInPlaceActivate(void);
  86.         STDMETHODIMP OnUIActivate(void);
  87.         STDMETHODIMP GetWindowContext(LPOLEINPLACEFRAME *
  88.                         , LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT
  89.                         , LPOLEINPLACEFRAMEINFO);
  90.         STDMETHODIMP Scroll(SIZE);
  91.         STDMETHODIMP OnUIDeactivate(BOOL);
  92.         STDMETHODIMP OnInPlaceDeactivate(void);
  93.         STDMETHODIMP DiscardUndoState(void);
  94.         STDMETHODIMP DeactivateAndUndo(void);
  95.         STDMETHODIMP OnPosRectChange(LPCRECT);
  96.     };
  97.  
  98. typedef CImpIOleInPlaceSite *PCImpIOleInPlaceSite;
  99.  
  100.  
  101. class CImpIOleDocumentSite : public IOleDocumentSite
  102.     {
  103.     protected:
  104.         ULONG               m_cRef;
  105.         class CSite        *m_pSite;
  106.         LPUNKNOWN           m_pUnkOuter;
  107.  
  108.     public:
  109.         CImpIOleDocumentSite(class CSite *, IUnknown *);
  110.         ~CImpIOleDocumentSite(void);
  111.  
  112.         STDMETHODIMP QueryInterface(REFIID, void **);
  113.         STDMETHODIMP_(ULONG) AddRef(void);
  114.         STDMETHODIMP_(ULONG) Release(void);
  115.  
  116.         STDMETHODIMP ActivateMe(IOleDocumentView *);
  117.     };
  118.  
  119. typedef CImpIOleDocumentSite *PCImpIOleDocumentSite;
  120.  
  121.  
  122.  
  123. /*
  124.  * The CSite class, a COM object with the interfaces IOleClientSite,
  125.  * IAdviseSink, IOleInPlaceSite, and IOleDocumentSite.
  126.  */
  127.  
  128.  
  129. class CSite : public IUnknown
  130.     {
  131.     friend CImpIOleClientSite;
  132.     friend CImpIAdviseSink;
  133.     friend CImpIOleInPlaceSite;
  134.     friend CImpIOleDocumentSite;
  135.  
  136.     private:
  137.         ULONG           m_cRef;
  138.         DWORD           m_dwID;
  139.         HWND            m_hWnd; //Client area window of parent
  140.  
  141.         class CFrame   *m_pFR;
  142.  
  143.         BOOL            m_fInitialized; //Something here?
  144.         LPSTORAGE       m_pIStorage;    //Storage for object
  145.  
  146.         //Object interfaces
  147.         IUnknown          *m_pObj;
  148.         IOleObject        *m_pIOleObject;
  149.         IOleInPlaceObject *m_pIOleIPObject;
  150.         IOleDocumentView  *m_pIOleDocView;
  151.  
  152.         BOOL               m_fDocObj;   //Document object here?
  153.  
  154.         //Our interfaces
  155.         PCImpIOleClientSite   m_pImpIOleClientSite;
  156.         PCImpIAdviseSink      m_pImpIAdviseSink;
  157.         PCImpIOleInPlaceSite  m_pImpIOleIPSite;
  158.         PCImpIOleDocumentSite m_pImpIOleDocumentSite;
  159.  
  160.  
  161.     protected:
  162.         BOOL    ObjectInitialize(LPUNKNOWN);
  163.  
  164.     public:
  165.         CSite(DWORD, HWND, CFrame *);
  166.         ~CSite(void);
  167.  
  168.         //Gotta have an IUnknown for delegation
  169.         STDMETHODIMP QueryInterface(REFIID, void **);
  170.         STDMETHODIMP_(ULONG) AddRef(void);
  171.         STDMETHODIMP_(ULONG) Release(void);
  172.  
  173.         BOOL        Create(LPTSTR, IStorage *);
  174.         BOOL        CreateStorage(IStorage *);
  175.         void        Close(BOOL);
  176.         void        Update(void);
  177.         void        Destroy(IStorage *);
  178.         void        Activate(LONG);
  179.         void        UpdateObjectRects(void);
  180.     };
  181.  
  182.  
  183. typedef CSite *PCSite;
  184.  
  185. #endif //_SITE_H_
  186.